14195
9374
Aşağıda verilen bir veri setim var
col1 col2 adı
bir 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
df'imin col1 ve col2'sini karşılaştırmak istiyorum ve col1 ve col2 değerlerini karşılaştırırken col2'nin değeri col1'den artıyorsa, o zaman oradaki sütunumda yanlarına artış girmek istiyorum azalıyor sonra azalıyor yazmak istiyorum ve aynıysa değişiklik yok
ve çıktımı böyle istiyorum
col1 col2 col3 adı
artan bir 10,3 10,9
b 11 15 artan
c 20 7.2 azalan
d 6.2 6.2 değişiklik yok
e 5.3 5.4 artan
f 4.5 4.0 azalan 
Dplyr ile:
df%>%
mutate (Col3 = ifelse (col2 == col1,
"değişiklik yok",
ifelse (col2> col1,
"artan", "azalan")))
Veya @akrun tarafından önerildiği gibi case_when kullanarak:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "değişiklik yok",
col2> col1 ~ "Artan",
TRUE ~ "azalan"))
Sonuç:
col1 col2 Col3 adı
1 a 10,3 10,9 artan
2 b 11.0 15.0 artan
3 c 20.0 7.2 azalan
4 gün 6.2 6.2 değişiklik yok
5 e 5.3 5.4 artan
6 f 4.5 4.0 azalan
Veri:
df <-yapı (liste (ad = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA
-6L))
|
Col1'i col2'ye göre çıkarabilir ve ardından değerleri atamak için işaret kullanabiliriz
df $ col3 <- c ("azalan", "değişiklik yok", "artan") [işaret (df $ col1 - df $ col2) + 2]
df
# name col1 col2 col3
# 1 10.3 10.9 düşüş
# 2 b 11.0 15.0 azalan
# 3 c 20.0 7.2 artan
# 4 d 6.2 6.2 değişiklik yok
# 5 e 5.3 5.4 azalan
# 6 f 4.5 4.0 artan
Veya dplyr kullanarak case_when kullanabiliriz
kütüphane (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "değişiklik yok",
col1> col2 ~ "artan",
TRUE ~ "azalan"))
|
Baz R
df $ col3 <-with (df, ifelse (col1> col2, "azalan",
ifelse (col1